package startupweekend201311.recipe4u.fragment;

import java.util.List;

import startupweekend201311.recipe4u.R;
import startupweekend201311.recipe4u.R.id;
import startupweekend201311.recipe4u.R.layout;

import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * リストデータのバインド用
 */
class ItemBindData {
	String title;	// タイトル
	int imgResId;	// 画像リソースID

	public ItemBindData(String text, int id) {
		this.title = text;
		this.imgResId = id;
	}
}

/**
 * ViewHolder
 */
class ItemViewHolder {
	TextView textView;
	ImageView imageView;
}

/**
 * カスタムアダプター
 * (ViewHolderを使ってリスト描画を高速化)
 */
public class CustomListAdapter extends ArrayAdapter<ItemBindData> {
	private LayoutInflater inflater;
	Context mContext;

	public CustomListAdapter(Context context, List<ItemBindData> objects) {
		super(context, 0, objects);
		mContext = context;
		this.inflater = (LayoutInflater) context
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}

	/**
	 * 表示するリストを取得する
	 */
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ItemViewHolder holder;
		// 渡されたViewがnullの場合は新しく生成する
		if (convertView == null) {
			convertView = inflater.inflate(R.layout.search_list_item, 
					parent, false);
			holder = new ItemViewHolder();
			holder.textView = (TextView) convertView.findViewById(R.id.txt_list_item);
			holder.imageView = (ImageView) convertView
					.findViewById(R.id.img_list_item);
			convertView.setTag(holder);
		} else {
			holder = (ItemViewHolder) convertView.getTag();
		}
		ItemBindData data = getItem(position);
		holder.textView.setText(data.title);
		
		BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 4;
		holder.imageView.setImageDrawable(new BitmapDrawable(mContext.getResources(), 
				BitmapFactory.decodeResource(mContext.getResources(), data.imgResId, options)));
		return convertView;
	}

}